package Week4;

import java.util.*;

public class Day22 {
}

//牛客:添加字符
class Main9 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] s1 = in.next().toCharArray();
        char[] s2 = in.next().toCharArray();
        int n1 = s1.length , n2 = s2.length;
        int ret = n1;

        //得到两个字符串的长度差值来枚举s2的不同的起点位置
        for(int i = 0; i <= n2 - n1; i++){
            //根据s2不同起点的位置开始对应的判断余s1不同的字符个数
            int tmp = 0;
            for(int j = 0; j < n1; j++){
                if(s1[j] != s2[i + j]){
                    //记录个数
                    tmp++;
                }
            }
            //得到这些以不同起点得到的对应不同的字符个数的最小值
            ret = Math.min(ret , tmp);
        }
        System.out.println(ret);
    }
}

//牛客:数组变换
class Main10 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        int max = 0;
        for (int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
            max = Math.max(max, arr[i]);
        }

        boolean flag = true;
        for (int i = 0; i < n; i++) {
            //如果最大值无法模尽，就代表不成倍数
            if (max % arr[i] != 0) {
                flag = false;
                break;
            }
            //判断是否为2的指数幂
            int x = max / arr[i];
            //方法一:lowbit公式 = x & -x , 这个方式是取出x二进制最后一个1位置到最后的二进制，而如果我们的数是2的指数幂，那么它的二进制数，是只有一个1的，因此我们再让x - (x & -x)判断他是否等于0即可
            if ((x - (x & -x)) != 0) {
                flag = false;
                break;
            }
            //方法二: x & (x - 1) , 如果x是2的指数幂，那么x - 1的二进制就是原本位置的1变成0，后面的所有0变成1,此时再让 x & (x - 1),根据相异为0，此时二进制数应该全为0，那么判断他是否等于0即可
            // if((x & (x - 1)) != 0){
            //     flag = false;
            //     break;
            // }
        }
        if (flag) System.out.println("YES");
        else System.out.println("NO");
    }
}

//牛客:装箱问题
class Main11 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int V = in.nextInt() , n = in.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++){
            arr[i] = in.nextInt();
        }

        //求出能装下的最大体积
        //创建一个dp表，表示前i个物品，在体积为j的情况下，能装入的最大体积
        int[][] dp = new int[n + 1][V + 1];
        for(int i = 1; i <= n; i++){
            for(int j = 0; j <= V; j++){
                dp[i][j] = dp[i - 1][j];
                if(j >= arr[i - 1]){
                    dp[i][j] = Math.max(dp[i][j] , dp[i - 1][j - arr[i - 1]] + arr[i - 1]);
                }
            }
        }
        //让总体积减去最大装入体积，就是最小体积
        System.out.println(V - dp[n][V]);
    }
}